왜 직접 만들어야 하는가
기상청의 미세먼지 정보는 도시·구 단위 평균이다. 하지만 학교 정문(차량 매연), 급식실 근처, 화학실, 운동장 등 우리 일상 공간의 공기 질은 그 평균과 크게 다를 수 있다.
이 프로젝트는 공학적 설계 과정(Engineering Design Process)을 경험한다. 문제 정의 → 솔루션 설계 → 시제품 제작 → 테스트 → 개선 → 발표. 단지 측정만이 아니라, 무엇을 어떻게 측정할지부터 함께 결정하고 만든다.
아두이노 우노 + PM2.5·MQ-135·DHT22 센서 + OLED 디스플레이의 조합이면 약 3~5만원으로 시중 30만원 제품 수준의 측정기를 만들 수 있다.
문제 발견 — DISCOVER
본격적 설계 전, 다음을 모둠으로 토의한다:
- ① 측정해야 할 것: 미세먼지(PM2.5·PM10)·이산화탄소(CO₂)·일산화탄소(CO)·휘발성 유기화합물(VOC)·온습도 중 무엇?
- ② 측정 위치: 학교 정문·운동장·급식실·과학실·체육관·화장실 — 우선 순위는?
- ③ 측정 빈도·기간: 1회? 하루? 일주일? 등하교 시간만?
- ④ 장치 요구사항: 휴대성·배터리·내구성·실시간 표시·데이터 저장·무선 전송?
▲ 서울 PM2.5 시간별 변동 — 같은 도시도 시간·지점마다 큰 차이
📋 요구사항 정리
위 토의 결과를 바탕으로 모둠의 핵심 요구사항 3가지를 결정한다. 예시:
- ① PM2.5·CO₂·온습도 측정
- ② 휴대 가능한 크기 (15×10×5cm 이내)
- ③ 1초마다 측정해 SD카드에 저장 + OLED 디스플레이
설계 — DESIGN
🛒 핵심 부품 6가지
Arduino Uno R3
마이크로컨트롤러. C++ 코드로 모든 센서를 제어한다.
PMS5003
레이저 광산란 방식. 0.3~10μm 입자 측정. UART 통신.
MQ-135
NH₃·CO₂·알코올 등 다양한 가스 감지.
DHT22
±0.5°C 정밀도. 습도 0~100% 측정.
OLED 0.96"
I2C로 연결. 실시간 측정값 표시. 128×64 px.
SD카드 모듈
CSV 형식으로 측정 데이터 영구 저장.
총 예산: 약 5만원. 점퍼선·브레드보드·9V 배터리 등 부수품 추가 시 6~7만원.
🔌 회로도와 코드
📐 회로 연결도 (간략화)
💻 핵심 코드 (Arduino C++)
#include "PMS5003.h"
#include "DHT.h"
#include "SSD1306.h"
PMS5003 pms;
DHT dht(4, DHT22);
SSD1306 oled(0x3C);
void setup() {
Serial.begin(9600);
pms.begin(); dht.begin(); oled.init();
}
void loop() {
int pm25 = pms.read_pm25(); // PM2.5 측정
float co2 = analogRead(A0)*0.5; // MQ-135 환산
float t = dht.readTemperature();
float h = dht.readHumidity();
oled.print("PM2.5: " + String(pm25) + "μg/m³");
oled.print("CO₂: " + String(co2));
oled.print("T/H: " + String(t) + "°C / " + String(h) + "%");
saveToSD(pm25, co2, t, h); // CSV 저장
delay(1000); // 1초마다
}
제작 — DO
🛠️ 5단계 공학적 설계 과정
요구 분석
측정 대상·환경 정의
회로 구성
브레드보드 시험
코딩
Arduino IDE
케이스
3D 프린팅/박스
테스트
교정·시험 측정
- 모든 부품을 받자마자 전압·핀번호를 확인하고 데이터시트를 1쪽 정리한다.
- 먼저 브레드보드에서 1개 센서씩 연결해 시험한다. PMS5003 → MQ-135 → DHT22 → OLED 순서.
- Arduino IDE에서 라이브러리(PMS5003·DHT·SSD1306) 설치. 각 센서 예제 코드 실행.
- 모든 센서가 정상 동작하면 통합 코드 작성. 1초마다 모든 측정.
- OLED에 4줄 출력 + SD카드에 CSV 저장 + 시리얼 모니터 디버그.
- 케이스 설계: 3D 프린터 가능하면 STL 디자인, 아니면 전자 부품 박스나 두꺼운 종이 박스로 보호.
- 9V 배터리 + 스위치 추가해 휴대 가능하게 만든다.
- 교정(calibration): 시중 검증된 측정기 옆에 두고 1시간 측정. 값을 비교해 보정 계수 적용.
브레드보드
점퍼선 20+개
9V 배터리
+클립·스위치
드라이버·니퍼
+납땜 도구
케이스/박스
3D 프린터 권장
노트북
Arduino IDE 설치
마이크로 SD카드
FAT32 포맷
안전 수칙 — 전자공작
- 전원을 켠 채로 회로를 만지지 않는다. 항상 USB·배터리 분리 후 작업.
- 납땜할 때 환기·보안경·집게 사용. 화상·연기 흡입 주의.
- 센서의 정격 전압을 정확히 확인. 5V 센서에 3.3V·반대로 연결하면 영구 손상.
- 3D 프린터 사용 시 노즐(180~220°C) 접촉 금지. 필라멘트 가스 환기.
- 측정 장치를 비·물에 접촉시키지 않는다. 야외 측정 시 일기 확인.
학교 매핑 — DELIVER
🗺️ 학교 공기 지도 만들기
완성된 측정기로 학교 주변 10개 지점을 매핑한다:
- ① 학교 정문 (차량 매연 지역)
- ② 후문 (조용한 골목)
- ③ 운동장 중앙
- ④ 1학년 교실 (점심 직후)
- ⑤ 급식실
- ⑥ 화학실
- ⑦ 체육관
- ⑧ 도서관
- ⑨ 화장실 주변
- ⑩ 학교 옥상
각 지점에서 5분 측정해 평균값을 얻고 학교 평면도에 색깔로 표시한다. 등하교 시간 vs 한낮 비교도 진행한다.
📋 결과 보고서
측정 결과를 다음으로 정리한다:
- ① 학교 평면도 + 색깔 매핑 (PM2.5 단계별 빨강/주황/초록)
- ② 시간대별 변화 그래프
- ③ 환경부 기준(PM2.5: ≤15μg/m³ 좋음, ≤35 보통, ≤75 나쁨, >75 매우 나쁨) 비교
- ④ 개선 권고안: 어느 위치를 어떻게 개선할 것인가
산출물 발표 — DIFFUSE
🎤 발표·전시
모둠별로 다음 형식으로 산출물을 공유한다:
- 장치 실물 전시 (5분 시연)
- 학교 공기 지도 포스터 (인포그래픽)
- 설계 과정 보고서 (코드+회로도+개선 일지)
- (심화) GitHub 공유: 다른 학교도 따라할 수 있게 코드·STL 파일 공개
- (심화) 학교 행정실 제안: 측정 결과를 바탕으로 한 시설 개선 요청
📊 평가 루브릭
공학적 산출물 평가표
| 평가 영역 | 우수 (3) | 보통 (2) | 미흡 (1) |
|---|---|---|---|
| 기능 | 모든 센서 정확 동작 | 일부 센서만 | 동작 불안정 |
| 완성도 | 케이스+휴대성 | 브레드보드 상태 | 전선 노출 |
| 창의성 | 독창적 기능 추가 | 기본 요구만 | 레퍼런스 복제 |
| 데이터 활용 | 유의미한 결론 | 단순 측정 | 분석 부족 |
| 발표·소통 | 명확하고 설득력 있음 | 대체로 전달 | 이해 어려움 |
| 협업 | 전원 균등 기여 | 일부만 적극 | 한 명에 의존 |
📍 이 프로젝트의 의의
① 이론에서 실물로. 교과서의 회로도가 손에 잡히는 제품이 된다.
② 공학적 사고. 요구 분석 → 설계 → 시제품 → 테스트 → 개선의 반복.
③ 창의적 산출. 같은 부품이라도 모둠마다 다른 솔루션이 나온다.
④ 시민 과학자의 탄생. 학교 안 학습이 진짜 사회 데이터로 이어진다.
📌 함께 생각해 보기
여러분이 만든 측정기는 시중 30만원 제품과 비교해 정확도가 어떨까? 부족한 점은 무엇이고 어떻게 개선할 수 있을까? 또한 측정 데이터를 어떻게 활용해야 진짜 의미 있는 변화가 일어날까?
여러분의 학교에서 발견한 환경 문제 중 가장 시급한 것은 무엇이었나요? 만약 학교가 그것을 해결하지 않는다면, 시민으로서 어떤 행동을 할 수 있을까요?